package algorithm.swordoff;

import java.util.Arrays;

/**
 * 扑克牌中的顺子
 * 从扑克牌中随机抽5张牌，判断是不是一个顺子，即这5张牌是不是连续的。2～10为数字本身，A为1，J为11，Q为12，K为13，而大、小王为 0 ，可以看成任意数字。A 不能视为 14。
 *
 * 主要是包含王难以处理
 *
 * 排序 并且 去掉王之后,最大牌减去最小牌的差小于5 并且 不重复
 *
 * 力扣上的测试用例 [0,0,0,0,1] 竟然返回true
 * 意思是王的数量是任意的
 *
 */

public class SQ61 {

    public boolean isStraight(int[] nums) {
        if (nums.length != 5) return false;
        Arrays.sort(nums);
        int jokers = 0;

        //  i < nums.length-1在else分支中不会数组越界,事实上i从[0,3]就可以判断所有相邻的牌是不是相等[01,12,23,34]
        for (int i = 0; i < nums.length-1; i++) {
            if (nums[i] == 0) jokers++;
            else if (nums[i] == nums[i+1]) return false;
        }
        return nums[4] - nums[jokers] < 5;

    }


}
